{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Overbooking on Airlines\n", "## Problem Definition\n", "A low-cost airline, ACP (Flying High), operates four daily flights from Valencia to London at 10:00, 12:00, 14:00 and 16:00 hours. The first two flights hold 100 passengers, and the last two can fly up to 150 passengers each. If overbooking occurs, which implies having sold more seats than the plane actually has, the airline can place a passenger on a later flight. Evidently each delayed traveller is compensated by being paid €200 plus €20 for each hour delayed. The firm places delayed travellers on their own operating flights, or on one of the flights from other airlines departing at 20:00 hours, which always have available seats (a capacity of 999 passengers is always considered) at no extra charge.\n", "Let us assume that at the beginning of the day we know that ACP has sold 110, 160, 100 and 100 seats on its four daily flights, respectively. Model this problem as a maximal flow model at a minimum cost in order to minimise the\n", "airline’s total overbooking cost." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solution\n", "We are going to use [networkx](https://networkx.github.io/) to draw the network and find the maximal flow at a minimum cost between two nodes. We are going to create a graph to model the selling process as a system with different states: source state (containing node S), flights sold state (comprised of nodes 10s, 12s, 14s, 16s), flights used state (comprised of nodes 10u, 12u, 14u, 16u, and 20u), and a sink state (containing node T). Edges are going to have two attributes: \n", "\n", "- $a_i$: maximum capacity in number of flight tickets sold or used\n", "- $c_i$: cost, cost for the company to move a passenger from one adjacent node to the other\n", "\n", "The flow of edges going from source node S to each flight sold state node flight represent the seats sold (edge S,10s represents the flights sold for flight at 10:00h, edge S,12s for the flight at 12:00s, etc.). These flights have a capacity equal to the number of tickets sold (110, 160, 100 and 140 respectively), and a cost of 0;\n", "The flow of edges going from each flight sold state to each flight used state represents how the company arranges passengers in the different flights. The edges will have a maximum capacity equal to the maximum number of passengers in each flight (100, 100, 150, 150 and 999) respectively, and a cost equal to the overbooking cost for each delayed flight (that is, zero for no delay, 240 for two hours late, 280 for hours late, and so on).\n", "\n", "Finally, flow in edges from the flights used state nodes to the sink node represent the total number of seats used in each plane. These edges will have a maximum capacity equal to the maximum capacity of each plane and a company cost of 0. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{('S', '10s'): Text(0.5, 0.5, '0'),\n", " ('S', '12s'): Text(0.5, 0.835, '0'),\n", " ('S', '14s'): Text(0.5, 1.165, '0'),\n", " ('S', '16s'): Text(0.5, 1.5, '0'),\n", " ('10s', '10u'): Text(1.5, 0.0, '0'),\n", " ('10s', '12u'): Text(1.5, 0.25, '240'),\n", " ('10s', '14u'): Text(1.5, 0.5, '280'),\n", " ('10s', '16u'): Text(1.5, 0.75, '320'),\n", " ('10s', '20u'): Text(1.5, 1.0, '400'),\n", " ('12s', '12u'): Text(1.5, 0.585, '0'),\n", " ('12s', '14u'): Text(1.5, 0.835, '240'),\n", " ('12s', '16u'): Text(1.5, 1.085, '280'),\n", " ('12s', '20u'): Text(1.5, 1.335, '360'),\n", " ('14s', '14u'): Text(1.5, 1.165, '0'),\n", " ('14s', '16u'): Text(1.5, 1.415, '240'),\n", " ('14s', '20u'): Text(1.5, 1.665, '320'),\n", " ('16s', '16u'): Text(1.5, 1.75, '0'),\n", " ('16s', '20u'): Text(1.5, 2.0, '280'),\n", " ('10u', 'T'): Text(2.5, 0.5, '0'),\n", " ('12u', 'T'): Text(2.5, 0.75, '0'),\n", " ('14u', 'T'): Text(2.5, 1.0, '0'),\n", " ('16u', 'T'): Text(2.5, 1.25, '0'),\n", " ('20u', 'T'): Text(2.5, 1.5, '0')}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import networkx as nx\n", "from IPython.display import display, Markdown\n", "\n", "# Create an empty directed graph structure: \n", "G = nx.DiGraph()\n", "\n", "# Add edges and define two attributes, production and costs:\n", "G.add_edges_from([(\"S\", \"10s\", {\"capacity\": 110, \"cost\": 0}),\n", " (\"S\", \"12s\", {\"capacity\": 160, \"cost\": 0}),\n", " (\"S\", \"14s\", {\"capacity\": 100, \"cost\": 0}),\n", " (\"S\", \"16s\", {\"capacity\": 140, \"cost\": 0}),\n", " (\"10s\", \"10u\", {\"capacity\": 100, \"cost\": 0}),\n", " (\"10s\", \"12u\", {\"capacity\": 100, \"cost\": 240}),\n", " (\"10s\", \"14u\", {\"capacity\": 150, \"cost\": 280}),\n", " (\"10s\", \"16u\", {\"capacity\": 150, \"cost\": 320}),\n", " (\"10s\", \"20u\", {\"capacity\": 999, \"cost\": 400}),\n", " (\"12s\", \"12u\", {\"capacity\": 100, \"cost\": 0}),\n", " (\"12s\", \"14u\", {\"capacity\": 150, \"cost\": 240}),\n", " (\"12s\", \"16u\", {\"capacity\": 150, \"cost\": 280}),\n", " (\"12s\", \"20u\", {\"capacity\": 999, \"cost\": 360}),\n", " (\"14s\", \"14u\", {\"capacity\": 150, \"cost\": 0}),\n", " (\"14s\", \"16u\", {\"capacity\": 150, \"cost\": 240}),\n", " (\"14s\", \"20u\", {\"capacity\": 999, \"cost\": 320}),\n", " (\"16s\", \"16u\", {\"capacity\": 150, \"cost\": 0}),\n", " (\"16s\", \"20u\", {\"capacity\": 999, \"cost\": 280}),\n", " (\"10u\", \"T\", {\"capacity\": 100, \"cost\": 0}),\n", " (\"12u\", \"T\", {\"capacity\": 100, \"cost\": 0}),\n", " (\"14u\", \"T\", {\"capacity\": 150, \"cost\": 0}),\n", " (\"16u\", \"T\", {\"capacity\": 150, \"cost\": 0}),\n", " (\"20u\", \"T\", {\"capacity\": 999, \"cost\": 0})])\n", "\n", "# Draw the directed graph\n", "pos = {\"S\": (0, 1),\n", " \"10s\": (1, 0),\n", " \"12s\": (1, 0.67),\n", " \"14s\": (1, 1.33),\n", " \"16s\": (1, 2),\n", " \"10u\": (2, 0),\n", " \"12u\": (2, 0.5),\n", " \"14u\": (2, 1),\n", " \"16u\": (2, 1.5),\n", " \"20u\": (2, 2),\n", " \"T\": (3, 1) \n", " }\n", "\n", "nx.draw(G, pos)\n", "nx.draw_networkx_labels(G, pos)\n", "nx.draw_networkx_nodes(G, pos, node_size=600, node_color='#efefef')\n", "nx.draw_networkx_labels(G, pos, font_weight='bold' )\n", "c_label = nx.get_edge_attributes(G, 'cost')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels=c_label)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sourcetargetcapacitycost
0S10s1100
1S12s1600
2S14s1000
3S16s1400
410s10u1000
510s12u100240
610s14u150280
710s16u150320
810s20u999400
912s12u1000
1012s14u150240
1112s16u150280
1212s20u999360
1314s14u1500
1414s16u150240
1514s20u999320
1616s16u1500
1716s20u999280
1810uT1000
1912uT1000
2014uT1500
2116uT1500
2220uT9990
\n", "
" ], "text/plain": [ " source target capacity cost\n", "0 S 10s 110 0\n", "1 S 12s 160 0\n", "2 S 14s 100 0\n", "3 S 16s 140 0\n", "4 10s 10u 100 0\n", "5 10s 12u 100 240\n", "6 10s 14u 150 280\n", "7 10s 16u 150 320\n", "8 10s 20u 999 400\n", "9 12s 12u 100 0\n", "10 12s 14u 150 240\n", "11 12s 16u 150 280\n", "12 12s 20u 999 360\n", "13 14s 14u 150 0\n", "14 14s 16u 150 240\n", "15 14s 20u 999 320\n", "16 16s 16u 150 0\n", "17 16s 20u 999 280\n", "18 10u T 100 0\n", "19 12u T 100 0\n", "20 14u T 150 0\n", "21 16u T 150 0\n", "22 20u T 999 0" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "edges_df = nx.to_pandas_edgelist(G);\n", "display(edges_df)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "maximum flow value: 510\n", "flow from S to 10s : 110 ; Cost: 0\n", "flow from S to 12s : 160 ; Cost: 0\n", "flow from S to 14s : 100 ; Cost: 0\n", "flow from S to 16s : 140 ; Cost: 0\n", "flow from 10s to 10u : 100 ; Cost: 0\n", "flow from 10s to 12u : 0 ; Cost: 0\n", "flow from 10s to 14u : 0 ; Cost: 0\n", "flow from 10s to 16u : 0 ; Cost: 0\n", "flow from 10s to 20u : 10 ; Cost: 4000\n", "flow from 12s to 12u : 100 ; Cost: 0\n", "flow from 12s to 14u : 50 ; Cost: 12000\n", "flow from 12s to 16u : 10 ; Cost: 2800\n", "flow from 12s to 20u : 0 ; Cost: 0\n", "flow from 14s to 14u : 100 ; Cost: 0\n", "flow from 14s to 16u : 0 ; Cost: 0\n", "flow from 14s to 20u : 0 ; Cost: 0\n", "flow from 16s to 16u : 140 ; Cost: 0\n", "flow from 16s to 20u : 0 ; Cost: 0\n", "flow from 10u to T : 100 ; Cost: 0\n", "flow from 12u to T : 100 ; Cost: 0\n", "flow from 14u to T : 150 ; Cost: 0\n", "flow from 16u to T : 150 ; Cost: 0\n", "flow from 20u to T : 10 ; Cost: 0\n", "Total cost is: 56400\n" ] } ], "source": [ "max_flow, flow= nx.maximum_flow(G, \"S\", \"T\", capacity='capacity')\n", "costs = nx.get_edge_attributes(G, 'cost')\n", "print(\"maximum flow value:\", max_flow)\n", "for k,v in flow.items():\n", " for k2 in v.keys():\n", " cost+=v[k2]*costs[(k,k2)]\n", " print(\"flow from \", k, \" to \", k2, \": \", v[k2], \"; Cost: \", v[k2]*costs[(k,k2)])\n", "\n", "print (\"Total cost is: \", cost)\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'S': {'10s': 110, '12s': 160, '14s': 100, '16s': 140}, '10s': {'10u': 100, '12u': 0, '14u': 0, '16u': 0, '20u': 10}, '12s': {'12u': 100, '14u': 50, '16u': 10, '20u': 0}, '14s': {'14u': 100, '16u': 0, '20u': 0}, '16s': {'16u': 140, '20u': 0}, '10u': {'T': 100}, '12u': {'T': 100}, '14u': {'T': 150}, '16u': {'T': 150}, '20u': {'T': 10}, 'T': {}}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "optimal_flow = {}\n", "for i in G.nodes():\n", " for j in flow[i].keys():\n", " optimal_flow[i,j] = flow[i][j]\n", "\n", "nx.draw(G, pos)\n", "nx.draw_networkx_labels(G, pos)\n", "nx.draw_networkx_nodes(G, pos, node_size=600, node_color='#efefef')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels=optimal_flow)\n", "\n", "print(flow)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10s12s14s16s10u12u14u16u20uT
10sNaNNaNNaNNaN100.00.00.00.010.0NaN
10uNaNNaNNaNNaNNaNNaNNaNNaNNaN100.0
12sNaNNaNNaNNaNNaN100.050.010.00.0NaN
12uNaNNaNNaNNaNNaNNaNNaNNaNNaN100.0
14sNaNNaNNaNNaNNaNNaN100.00.00.0NaN
14uNaNNaNNaNNaNNaNNaNNaNNaNNaN150.0
16sNaNNaNNaNNaNNaNNaNNaN140.00.0NaN
16uNaNNaNNaNNaNNaNNaNNaNNaNNaN150.0
20uNaNNaNNaNNaNNaNNaNNaNNaNNaN10.0
S110.0160.0100.0140.0NaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " 10s 12s 14s 16s 10u 12u 14u 16u 20u T\n", "10s NaN NaN NaN NaN 100.0 0.0 0.0 0.0 10.0 NaN\n", "10u NaN NaN NaN NaN NaN NaN NaN NaN NaN 100.0\n", "12s NaN NaN NaN NaN NaN 100.0 50.0 10.0 0.0 NaN\n", "12u NaN NaN NaN NaN NaN NaN NaN NaN NaN 100.0\n", "14s NaN NaN NaN NaN NaN NaN 100.0 0.0 0.0 NaN\n", "14u NaN NaN NaN NaN NaN NaN NaN NaN NaN 150.0\n", "16s NaN NaN NaN NaN NaN NaN NaN 140.0 0.0 NaN\n", "16u NaN NaN NaN NaN NaN NaN NaN NaN NaN 150.0\n", "20u NaN NaN NaN NaN NaN NaN NaN NaN NaN 10.0\n", "S 110.0 160.0 100.0 140.0 NaN NaN NaN NaN NaN NaN" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "flow_df = pd.DataFrame.from_dict(flow, orient='index')\n", "display(flow_df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 2 }